Сначала посмотрите как работает. Я просто в шоке. Сначало обычный запуск.

Теперь нажмем правую кнопку мыши.

При некоторой доли сноровки можно добиться и такого эффекта.

Нажмете левую кнопку и окно вернется к начальному виду.
Итак, создаем приложение как MFC AppWizard. Пусть оно будет SDI и имя у него будет tt. В классе приложения заведем переменную типа регион.
class CTtApp : public CWinApp
{
public:
HRGN rgn;
CTtApp();
........
};
И сохраним регион окна при инициализации окна.
////////////////////////////////////
// CTtApp initialization
BOOL CTtApp::InitInstance()
{
.......
GetWindowRgn(m_pMainWnd->m_hWnd,rgn);
return TRUE;
}
Вот теперь окно можно будет востановить. Код при нажатии на правую кнопку мыши.
void CTtView::OnRButtonDown(UINT nFlags, CPoint point)
{
AfxGetApp()->m_pMainWnd->SetWindowRgn( CreateEllipticRgn(40, 40, 300, 200),true);
CView::OnRButtonDown(nFlags, point);
}
И левую при востановлении.
void CTtView::OnLButtonDown(UINT nFlags, CPoint point)
{
CTtApp* tt=(CTtApp*)AfxGetApp();
AfxGetApp()->m_pMainWnd->SetWindowRgn(tt->rgn,true);
CView::OnLButtonDown(nFlags, point);
}
Вот и всё. Смотрите на код. Основой этого года является понятие регион. Это давайте договоримся что это область окна. Её можно получить использовав функцию GetWindowRgn. И поменять SetWindowRgn помня, что все эти функции находятся в классе CWinApp. Регионы бывают разные. Например, эллипсоидные. Вот такой регион мы и делаем. Чем же регион отличается от класса CRect. Только тем, что CRect всегда прямоугольник, а регион может принимать разные формы.